/**
 * 
 */
package modele;

import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
import java.awt.image.ConvolveOp;
import java.awt.image.Kernel;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import javax.imageio.*;

/**
 * @author e114366
 * 
 */
public class ModeleInterface {
	/**
	 * Cette classe permet de charger une image
	 * 
	 * @param chemin
	 *            vers l'image nomfichier
	 * @return image chargee
	 * @throws IOException
	 */
	String nomimage;

	public BufferedImage chargerImage(File nomfichier) throws IOException {
		this.nomimage = nomfichier.getAbsolutePath().toString();
		BufferedImage image = null;
		// URL url = getClass().getResource(nomfichier);
		image = ImageIO.read(nomfichier);
		return image;

	}

	/**
	 * Cette methode prend en parametre l'image a sauvegarder
	 * 
	 * @param image
	 * @return true or false
	 * @throws IOException
	 */
	public boolean sauvegarderImage(BufferedImage image) throws IOException {
		File output = new File(nomimage);
		String[] test = nomimage.split("\\.");
		if (ImageIO.write(image, test[1], output))
			return true;
		return false;
	}

	public void noirBlanc() {

	}

	/**
	 * Cette focntion filtre une image en blur
	 * 
	 * @param image
	 */
	public BufferedImage blurImage(BufferedImage image) {
		float[] blurMatrix = { 1 / 14f, 2 / 14f, 1 / 14f, 2 / 14f, 2 / 14f,
				2 / 14f, 1 / 14f, 2 / 14f, 1 / 14f };
		BufferedImageOp op = new ConvolveOp(new Kernel(3, 3, blurMatrix));
		BufferedImage nouvelleImage = op.filter(image, null);
		return nouvelleImage;
	}

	public BufferedImage blackImage(BufferedImage image) {
		float[] blackMatrix = { 0, 14,  3, 13,
				11,  5,  8,  6,
				12,  2, 15,  1,
				 7,  9,  4, 10 };
		BufferedImageOp op = new ConvolveOp(new Kernel(3, 3, blackMatrix));
		BufferedImage nouvelleImage = op.filter(image, null);
		return nouvelleImage;
	}
}
